/**
 * Paquete que contiene los objetos.
 */
package co.sumset.objetos;

/**
 * Clase Rojo, representa a los globulos rojos.
 * 
 * @author Cristian Raul Pineda Rodriguez
 */
public class Rojo extends Actor{

	protected int vx;//Velocidad en el eje X del Escenario.
	protected int vy;//Velocidad en el eje Y del Escenario.
	protected int posX=140;// Posicion en el eje X

	/**
	 * Metodo Constructor. Inicializar los recursos necesarios 
	 * para la creacion de este obejto en el escenario.
	 * 
	 * @param stage
	 */
	public Rojo(Escenario stage) {
		super(stage);

		setSpriteNames( new String[] {"/juego/rojo01.png","/juego/rojo02.png"});
		setFrameSpeed(35);
	}

	/**
	 * Este Metodo permite el comportamiento
	 * del objeto Rojo en el escenario.
	 * Si excede el eje Y es removido.
	 * 
	 */
	public void act() {
		super.act();
		$varY+=vy;

		if ($varY < 0) {
			remove();
			spawn(1);
		}

		if($varY > Escenario.HEIGHT-250){
			vy = -vy;
		}
	}

	/**
	 * Este metodo permite verificar las collisiones con otros Actores en el 
	 * caso del Rojo si los Actores son: Virus; si estos colisionan con el 
	 * rojo este es removido del escenario.
	 * 
	 * @param a ; Recibe los actores que colisionan en el Escenario con el Rojo.
	 */
	public void collision(Actor a) {
		if (a instanceof Virus ){
			remove();
			stage.getSoundCache().playSound("explosion.wav");
		}
	}

	/**
	 * Este metodo permite engendrar objetos Rojos.
	 * 
	 * @param limite
	 */
	public void spawn(int limite) {

		for (int i = 0; i < limite; i++) {
			Rojo m = new Rojo(stage);

			m.set$varX((int)(Math.random()*stage.WIDTH-32));


			m.set$varY(Escenario.HEIGHT-250);
			m.setVy(1);
			stage.addActor(m);

		}
	}

	/**
	 * @return the vx
	 */
	public int getVx() {
		return vx;
	}

	/**
	 * @param vx the vx to set
	 */
	public void setVx(int vx) {
		this.vx = vx;
	}

	/**
	 * @return the vy
	 */
	public int getVy() {
		return vy;
	}

	/**
	 * @param vy the vy to set
	 */
	public void setVy(int vy) {
		this.vy = vy;
	}

	/**
	 * @return the posX
	 */
	public int getPosX() {
		return posX;
	}

	/**
	 * @param posX the posX to set
	 */
	public void setPosX(int posX) {
		this.posX = posX;
	}
}
